﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SOAPServices.Dominio;

using System.Data;
using System.Data.SqlClient;

namespace SOAPServices.Persistencia
{
    public class CabinaDAO:BaseDAO<Cabina,int>
    {
        public List<Cabina> ConsultarCabinasxEstacion(int codigo)
        {
            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            List<Cabina> listaCabinas = null;
            Cabina cabina = null;
            Estacion estacion = null;

            try
            {
                string sql = "SELECT codCabina, c.descripcion, e.codEstacion, e.descripcion FROM tb_cabina c, tb_estacion e " +
                            "WHERE c.codEstacion = e.codEstacion and e.codEstacion = @codEstacion";
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand(sql, con);
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.Add("@codEstacion", SqlDbType.Int).Value = codigo;
                rdr = cmd.ExecuteReader();
                if (rdr.HasRows)
                {
                    listaCabinas = new List<Cabina>();

                    while (rdr.Read())
                    {
                        cabina = new Cabina();

                        estacion = new Estacion();
                        estacion.Codigo = int.Parse(rdr[2].ToString());
                        estacion.Descripcion = rdr[3].ToString();
                        
                        cabina.Codigo = int.Parse(rdr[0].ToString());
                        cabina.Descripcion = rdr[1].ToString();
                        cabina.Estacion = estacion;
                        listaCabinas.Add(cabina);
                    }
                }
            }
            catch
            {
                listaCabinas = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return listaCabinas;
        }
    }
}